1. Field of the Invention
The present invention generally relates to data storage systems and methods, and, more particularly, to a methodology for hashing objects into multiple directories in a distributed object-based data storage system to allow better information access concurrency.
2. Description of Related Art
With increasing reliance on electronic means of data communication, different models to efficiently and economically store a large amount of data have been proposed. A data storage mechanism requires not only a sufficient amount of physical disk space to store data, but various levels of fault tolerance or redundancy (depending on how critical the data is) to preserve data integrity in the event of one or more disk failures. In addition to providing fault tolerance, a data storage system also requires reduction in access latency and contention (thereby expediting access) when two or more applications attempt to concurrently access the same storage location for data retrieval.
In an object-based data storage system, many client applications or workloads include metadata operations on one or a small number of directory objects with very high concurrency. Metadata may include file and directory object attributes as well as directory object contents. The term “metadata” generally refers not to the underlying data itself, but to the attributes or information that describe that data. In a large cluster of computing machines or on a massively parallel machine, having every node create or access a file object in a single directory simultaneously for metadata operations (e.g., creating a checkpoint file) implies N concurrent operations in a single directory, where N is the number of nodes or computing machines in the storage system. In this situation, the requested operations are essentially serialized, because each operation is logically independent of the other ones and each operation must lock the parent directory object for the duration of the operation to successfully complete the operation. Thus, even in a distributed data storage architecture, the file manager controlling the directory object experiencing concurrent accesses becomes a hotspot because this file manager is the single point of contention for all the parallel operations.
The serialization problem discussed above is still present even when there are multiple file managers in a distributed storage system. The multiple file managers may be configured to share responsibility for a single directory. This situation is not conceptually different from the single file manager scenario discussed in the previous paragraph. The only difference is that a create request (e.g., to create a file) may now be routed to any one of a set of file managers, rather than just a single file manager. From the file system perspective, the file managers sharing responsibility for this directory must coordinate their activities with one another. Furthermore, updates to the directory object must still be serialized among the managing group of file managers. This multiple file manager situation greatly complicates the file manager's fault model and the overhead of synchronizing updates among the file managers may greatly overwhelm any potential benefit from this scheme.
Therefore, it is desirable to devise a data storage methodology that allows for increased concurrency among information transfer operations on a single directory object. It is further desirable that the data storage methodology alleviate the problem of access serialization, while reducing data access latency and contention.